Skip to content

Release CodeTruss CLI v0.2.42 - #31

Closed
DeliriumPulse wants to merge 1 commit into
mainfrom
release/cli-0.2.42
Closed

Release CodeTruss CLI v0.2.42#31
DeliriumPulse wants to merge 1 commit into
mainfrom
release/cli-0.2.42

Conversation

@DeliriumPulse

Copy link
Copy Markdown
Collaborator

Syncs the mirror to monorepo b40fce6 "Ship CLI 0.2.42: bounded scan time and honest deltas".

What changed

31 paths copied byte-for-byte from the monorepo commit (verified: every synced path hashes identically to its monorepo blob), plus two surgical edits:

  • CHANGELOG.md — the release-notes source. Preamble pointer moved to v0.2.42 and the 0.2.42 entry inserted. Body from ## 0.2.42 down is identical to packages/cli/CHANGELOG.md.
  • release-reference.json — the immutable website candidate for 0.2.42: archive 7d212774…, SBOM c13ce5f5…, bundle ad251e11…. Each digest was derived from the published artifact, not restated.

New in this release: codetruss-cli-0.2.42.{tgz,tgz.sha256,sbom.cdx.json} and two new test files.

The lockfile trap

package.json and pnpm-lock.yaml are deliberately unchanged. They carry the web-tree-sitter@0.22.6 / tree-sitter-wasms@0.1.11 pins added in ca155a5. 0.2.41 introduced a lockfile-integrity check that refuses grammar-pack provenance unless the mirror workspace pins exactly one resolution of each source package; without those pins Node 20.9 passes while 22 and 24 fail. 0.2.42 changes no dependency, so the existing pins remain correct.

public/downloads/grammars/ is carried unchanged (7 files).

Verification

  • Archive digest matches the site and the monorepo: 7d212774695235bad12055be5e27167d1904cfedc676f50be71e35dba010230b
  • All nine CI legs must be green here and again on main after merge.

🤖 Generated with Claude Code

Syncs the mirror to monorepo b40fce6 "Ship CLI 0.2.42: bounded scan time and
honest deltas". Every source, test, changelog, and download artifact is copied
byte-for-byte from that commit; the 31 synced paths hash identically to their
monorepo blobs.

The mirror's own workspace files are deliberately untouched: package.json and
pnpm-lock.yaml keep the web-tree-sitter/tree-sitter-wasms pins added in ca155a5,
without which the 0.2.41 lockfile-integrity check fails grammar verification on
Node 22 and 24 while passing on 20.9.

release-reference.json records the immutable website candidate for 0.2.42:
archive 7d212774…, SBOM c13ce5f5…, bundle ad251e11…, each derived from the
published artifact rather than restated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@DeliriumPulse

Copy link
Copy Markdown
Collaborator Author

Blocked: 0.2.42 does not pass pnpm typecheck

6 of 9 legs are red. This is not a sync error and not the lockfile trap — the three Node 20.9 legs pass because ci.yml skips typecheck there (if: matrix.node != '20.9.0'). All six typechecking legs fail identically.

Reproduced locally against this branch, pnpm typecheck exit 1, three errors in two files:

test/sast-coverage-delta.test.ts(49,5):  TS2322  Type COMPLEXITY is not assignable to type 'FindingCategory'
test/suppression.test.ts(112,7):         TS2345  Property 'sastCoverageGap' is missing
test/suppression.test.ts(123,38):        TS2345  Property 'sastCoverageGap' is missing

Both defects arrive with 0.2.42 from the monorepo commit b40fce6, unchanged by the sync:

  1. sast-coverage-delta.test.ts is new in 0.2.42 and sets category: 'COMPLEXITY', but FindingCategory has no such member (TECH_DEBT | BUG_RISK | DEAD_CODE | DUPLICATION | SECURITY_HYGIENE | DOCUMENTATION | ARCHITECTURE | TESTING | DEPENDENCY | PERFORMANCE | STRUCTURE).
  2. 0.2.42 added a required sastCoverageGap to the analysis envelope (analysis.ts), but suppression.test.ts's local analysis() helper was not updated.

Why the monorepo did not catch it

The monorepo has no typecheck script — not in its root package.json, not in packages/cli/package.json. packages/cli/tsconfig.json (which includes test/**/*.ts) is only ever run by this repo's typecheck script. So nothing upstream typechecks packages/cli/test.

What is sound

  • pnpm test405/405 pass, exit 0
  • pnpm release:artifact rebuilds to the published digest exactly: 7d212774695235bad12055be5e27167d1904cfedc676f50be71e35dba010230b
  • pnpm release:verify — exit 0
  • The 31 synced paths are byte-identical to their b40fce6 blobs

Only the typecheck gate is red. The shipped tarball is fine.

Why the tag was not pushed

release.yml runs pnpm typecheck as the first command of its build step, so pushing v0.2.42 would fail the release job. The tag has deliberately not been created.

The fix belongs in the monorepo (b40fce6), then a re-sync — patching only the mirror would break the byte-fidelity invariant the attestation story depends on.

@DeliriumPulse

Copy link
Copy Markdown
Collaborator Author

Superseded. 0.2.42 could not be released — it shipped three type errors in test files and this repo's release job runs pnpm typecheck first. That is fixed in CLI 0.2.43, which also adds the typecheck gate the monorepo never had, so the next sync goes straight to 0.2.43.

@DeliriumPulse
DeliriumPulse deleted the release/cli-0.2.42 branch August 7, 2026 18:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant